package com.gccloud.design.service;


import com.gccloud.design.dto.SearchMyBusiness;
import com.gccloud.design.dto.UcBusiShowDto;
import com.gccloud.design.dto.UserAndRoleBusiOrderConfigDto;
import com.gccloud.design.entity.SdFormDefineEntity;
import com.gccloud.design.entity.UcBusiShowEntity;
import com.gccloud.design.vo.SequenceVo;
import com.gccloud.design.vo.UserAndRoleBusiOrderConfigVo;

import java.util.List;
import java.util.Map;

/**
 * @author guo.wang
 */
public interface UcBusiOrderShowService {
    /**
     * @param userAndRoleBusiOrderConfigDto 配置dto
     * @return Boolean
     */
    Boolean userAndRoleBusiOrderConfig(UserAndRoleBusiOrderConfigDto userAndRoleBusiOrderConfigDto);

    /**
     * @param formIds 表单定义ids
     * @return UserAndRoleBusiOrderConfigDto
     */
    UserAndRoleBusiOrderConfigVo findUserAndRoleOrderConfig(String[] formIds);

    /**
     * 根据用户名查询我的业务场景
     *
     * @param searchMyBusiness 登录信息 和业务场景名称
     * @return List<UcBusiShowEntity>
     */
    List<UcBusiShowEntity> getMyOrderList(SearchMyBusiness searchMyBusiness);

    List<UcBusiShowEntity> getMyOrderListByIds(Map<String, String> map);

    List<UcBusiShowDto> getBusiTree(Map<String, String> map);

    /**
     * 修改我的业务场景
     *
     * @param ucBusiShowEntity 业务场景entity
     * @return Boolean
     */
    Boolean updateMyOrder(UcBusiShowEntity ucBusiShowEntity);

    /**
     * 更新我的业务场景展示顺序
     *
     * @param ucBusiShowEntity 业务场景entity
     * @return Boolean
     */
    Boolean updateMyOrderSequence(List<UcBusiShowEntity> ucBusiShowEntity);

    /**
     * 修改我的业务场景
     *
     * @param ucBusiShowEntity 业务场景entity
     * @return Boolean
     */
    Boolean updateMyOrderByFormId(UcBusiShowEntity ucBusiShowEntity);

    /**
     * 根据用户名查询我的业务场景
     *
     * @param ucBusiShowEntity 业务场景entity
     * @return List<UcBusiShowEntity>
     */
    List<UcBusiShowEntity> getMyOrderByFormId(UcBusiShowEntity ucBusiShowEntity);

    /**
     * 根据userName roleId stationId formId 删除业务场景相关配置
     *
     * @param userAndRoleBusiOrderConfigDto 业务场景dto
     * @return List<UcBusiShowEntity>
     */
    Boolean delMyOrderByFormId(UserAndRoleBusiOrderConfigDto userAndRoleBusiOrderConfigDto);

    /**
     * 基于表单id查询formUrl
     *
     * @param formId 表单id
     * @return formUrl
     */
    SdFormDefineEntity getFormUrlByFormId(Long formId);

    /**
     * 拖拽图标重新排序
     *
     * @param
     * @param sequenceVos
     * @return formUrl
     */
    Long changeSequence(List<SequenceVo> sequenceVos);

    /**
     * 根据formId删除业务场景人员配置
     * @param formIds
     * @return
     */
    int delByFormId(Long[] formIds);
}
